![]() |
NW54 - Open Transport ÉGÉâÅ[ -3151 Ç®ÇÊÇ— -3160 ÇΔ Option Management(98 îN 4 åé 24 ì˙)Q: OptionManagement ä÷êîÇ≈ÉGÉìÉhÉ|ÉCÉìÉgÇÃÉIÉvÉVÉáÉìÇê›íËǵÇÊǧÇΔÇ∑ÇÈÇΔÅAÉGÉâÅ[-3151 (ïsê≥Ç»ÉIÉvÉVÉáÉì) Ç‹ÇΩÇÕ ÉGÉâÅ[ -3160 (ÉoÉbÉtÉ@ÉIÅ[ÉoÅ[ÉtÉçÅ[) ÇÃÇ¢Ç∏ÇÍÇ©ÇÃÉGÉâÅ[ÉÅÉbÉZÅ[ÉWÇ™í ímÇ≥ÇÍÇ‹Ç∑ÅBDZÇÃÉGÉâÅ[ÇâåàÇ∑ÇÈÇ…ÇÕâΩÇí≤Ç◊ÇΩÇÁÇÊÇ¢Ç≈ǵÇÂǧǩÅB
A: ÉGÉâÅ[ -3151 ÇÕ Open Transport ÇÃÉGÉìÉhÉ|ÉCÉìÉgÇ…ëŒÇµÇƒïsê≥Ç»ÉIÉvÉVÉáÉìÇ‹ÇΩÇÕïsê≥Ç»ÉIÉvÉVÉáÉìílÇ™ìnÇ≥ÇÍÇΩDZÇΔÇé¶ÇµÇ‹Ç∑ÅBà»â∫ÇÃâÒìöÇÕ ÉGÉâÅ[ -3151 ÇÃàÍî ìIÇ»å¥àˆÇÕéüÇÃí ÇËÇ≈Ç∑ÅB
1. ÉIÉvÉVÉáÉìÇÃí∑Ç≥Ç™ê≥ǵÇ≠džÇËÇ‹ÇπÇÒÅBOpen Transport Çà Option Management ÉIÉvÉVÉáÉìÇÃílÇÃí∑Ç≥ÇÕÇŸÇΔÇÒÇ« 4 ÉoÉCÉgÇ≈Ç∑ÅBǵǩǵÅAï∂éöóÒÇ‚ç\ë¢ëÃÇÃílÇéÊÇÈÉIÉvÉVÉáÉìLJdžÇËÇ‹Ç∑ÅB
ÉGÉâÅ[ -3151 Ç™ç≈LJî≠ê∂Ç∑ÇÈÇÃÇÕÅAÉIÉvÉVÉáÉìÇÃílÇ™ 1 ÉoÉCÉgÇ»ÇÃÇ…ÅA4 ÉoÉCÉgÇÃí∑Ç≥Ç™éwíËÇ≥ÇÍǃǢÇÈèÍçáÇ≈Ç∑ÅBDZDZÇ≈LJìØólÇ…ÅAí∑Ç≥ÇÃà¯êîÇÕ
2. optReq.flags = T_NEGOTIATE; optReq.opt.len = sizeof(optBuffer); // ÉoÉbÉtÉ@ÇÃÉTÉCÉYÇéwíË optReq.opt.maxlen = sizeof(optBuffer); // <--- DZÇÃçsÇÃÉRÅ[ÉhÇí«â¡ optReq.opt.buf = (UInt8*) optBuffer; OTMemzero(optBuffer, sizeof(optBuffer)); opt->level = INET_IP; opt->name = IP_ADD_MEMBERSHIP; opt->len = sizeof(optBuffer); // ÉIÉvÉVÉáÉìÇÃÉTÉCÉYÇéwíË
ìØÇ∂ÉRÅ[ÉhÉTÉìÉvÉãÇ≈ÅA è„ãLÇÃèCê≥ÇÕÅuOpen Transport SDK v1.3Åvà»ëOÇÃèÍçáÇ…äYìñǵNjÇ∑ÅB
3. Open Transport v1.3 à»ëOÇÃÉoÅ[ÉWÉáÉìÇégópÇ∑ÇÈç€Ç…ä˘ímÇÃñ‚ëËǙdžÇËÇ‹Ç∑ÅB ÉGÉâÅ[ -3160 ÇÃàÍî ìIÇ»å¥àˆÇÕéüÇÃí ÇËÇ≈Ç∑ÅB
1.
2. Open Transport v1.3 à»ëOÇÃÉoÅ[ÉWÉáÉìÇégópÇ∑ÇÈç€Ç…ä˘ímÇÃñ‚ëËǙdžÇËÇ‹Ç∑ÅBí∑Ç≥Ç™ 1 ÉoÉCÉgÇ© 2 ÉoÉCÉgÇà TCP/IP ÉIÉvÉVÉáÉìÇÃÉlÉSÉVÉGÅ[ÉgÇ≈ÅAâûìöÉoÉbÉtÉ@ÇÃí∑Ç≥Ç 4 ÉoÉCÉgÇÊÇËè¨Ç≥Ç¢ílÇ…ê›íËÇ∑ÇÈÇΔÅAOpen Transport ÇÕDZÇÃÉGÉâÅ[Çï‘ǵNjÇ∑ÅBǮLJǵÇÎǢDZÇΔÇ…ÅAÉIÉvÉVÉáÉìÇÃÉlÉSÉVÉGÅ[Égé©ëÃÇÕê¨å˜Ç∑ÇÈèÍçáǙdžÇËÇ‹Ç∑ÅBDZÇÃñ‚ëËÇâÒîÇ∑ÇÈÇ…ÇÕÅAÉoÉbÉtÉ@ÉTÉCÉYÇÕ âûìöÉpÉâÉÅÅ[É^Ç™éwíËÇ≥ÇÍǃǢǻǢÇΔÅAÉGÉâÅ[ -3160 ÇÕï‘Ç≥ÇÍÇ‹ÇπÇÒÅBàÍï˚ÅAï‘ÇËílÇÉ`ÉFÉbÉNǵǻǢÇΔÅAÉIÉvÉVÉáÉìê›íËÇÃåƒÇ—èoǵÇÃÉXÉeÅ[É^ÉXÇ™ T_SUCCESS ǩǫǧǩí≤Ç◊ÇÈDZÇΔÇ™Ç≈Ç´Ç‹ÇπÇÒÅBDZÇÃñ‚ëËÇÕÅAéüÇÃÉIÉvÉVÉáÉìÇê›íËǵÇÊǧÇΔÇ∑ÇÈèÍçáÇ…î≠ê∂ǵNjÇ∑ÅB
OTMultiCastPitchSample.cp ÉtÉ@ÉCÉãÇÃïœçXÇΔèCê≥Ç≈Ç∑ÅB
èCê≥ 1: // // É}ÉãÉ`ÉLÉÉÉXÉgëóêMÇà Time-to-live ÇÃílÇÃê›íË (ÉfÉtÉHÉãÉgÇÕ 1) // TOptMgmt ÇÕçƒóòópÇ≈Ç´ÇÈÇ™ÅAOption é©ëÃÇÕï ÅB // è„ÇÃÉoÉbÉtÉ@ÇÕçƒóòópâ¬î\ÇæÇ™ÅAê≥ämÇä˙Ç∑ÇΩÇflê≥ǵǢï˚ñ@ÇéÊÇÈÅB // UInt8 ttlOptBuffer[ kOTFourByteOptionSize ]; // <-- 4 ÉoÉCÉgí∑ÇÃÉIÉvÉVÉáÉìÉoÉbÉtÉ@ TOption* ttlOpt = (TOption*)ttlOptBuffer; optReq.flags = T_NEGOTIATE; optReq.opt.len = kOTOneByteOptionSize; // <-- ÉIÉvÉVÉáÉìí∑ÇÕ 1 ÉoÉCÉgÇÃNjNj optReq.opt.maxlen = sizeof(ttlOptBuffer); // <-- âûìöÉoÉbÉtÉ@ÇÃç≈ëÂí∑Çê›íË optReq.opt.buf = (UInt8*) ttlOptBuffer; OTMemzero(optBuffer, sizeof(ttlOptBuffer)); ttlOpt->level = INET_IP; ttlOpt->name = IP_MULTICAST_TTL; ttlOpt->len = kOTOneByteOptionSize; // <-- ÉIÉvÉVÉáÉìí∑ÇÕ 1 ÉoÉCÉgÇÃNjNj *(char*)(ttlOpt->value) = kDefaultTTL; err = gEndpt->OptionManagement(&optReq, &optReq);èCê≥ 2: IP_MULTICAST_LOOP ÉIÉvÉVÉáÉìÇê›íËÇ∑ÇÈÉTÉìÉvÉãÉRÅ[ÉhÇÃïœçX
// // ÉãÅ[ÉvÉoÉbÉNÇÉIÉtÇ…Ç∑ÇÈ - é©ï™Ç≈ëóêMǵÇΩÉpÉPÉbÉgÇéÛÇØéÊÇËÇΩÇ¢èÍçáÇÕÉIÉtDžǵǻǢ // TOptMgmt optReq; UInt8 optBuffer[ kOTFourByteOptionSize ]; // <-- 4 ÉoÉCÉgí∑ÇÃÉIÉvÉVÉáÉìÉoÉbÉtÉ@ TOption* opt = (TOption*)optBuffer; OTMemzero(optBuffer, sizeof(optBuffer)); optReq.flags = T_NEGOTIATE; optReq.opt.len = kOTOneByteOptionSize; // <-- ÉIÉvÉVÉáÉìí∑ÇÕ 1 ÉoÉCÉgÇÃNjNj optReq.opt.maxlen = sizeof(optBuffer); // <-- âûìöÉoÉbÉtÉ@ÇÃç≈ëÂí∑Çê›íËÇ∑ÇÈ optReq.opt.buf = (UInt8*) optBuffer; opt->level = INET_IP; opt->name = IP_MULTICAST_LOOP; opt->len = kOTOneByteOptionSize; // <-- ÉIÉvÉVÉáÉìí∑ÇÕ 1 ÉoÉCÉgÇÃNjNj *(char *)(opt->value) = gLoopbackState; err = gEndpt->OptionManagement(&optReq, &optReq);
-- Rich Kubota [ Technical Q&A's : Communications & Collaboration : Networking : NW54 ] |
![]() |